Skip to content

chore: remove AppsModel::appItem(desktopId)#686

Merged
BLumia merged 1 commit into
linuxdeepin:masterfrom
BLumia:iceyer-crash
Dec 30, 2025
Merged

chore: remove AppsModel::appItem(desktopId)#686
BLumia merged 1 commit into
linuxdeepin:masterfrom
BLumia:iceyer-crash

Conversation

@BLumia

@BLumia BLumia commented Dec 30, 2025

Copy link
Copy Markdown
Member

此接口会先调用 appItems() 获取所有应用的列表,然后再遍历以进行查找.
一方面是效率问题(可以直接查找返回),一方面可能存在遍历时原有指针可能
失效的问题.

原本相关类提供了 itemFromDesktopId() 接口提供了完全相同的功能,故直
接移除 appItem(desktopId) 接口.

此接口会先调用 appItems() 获取所有应用的列表,然后再遍历以进行查找.
一方面是效率问题(可以直接查找返回),一方面可能存在遍历时原有指针可能
失效的问题.

原本相关类提供了 itemFromDesktopId() 接口提供了完全相同的功能,故直
接移除 appItem(desktopId) 接口.

Log:
@BLumia BLumia requested a review from 18202781743 December 30, 2025 05:50

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @BLumia, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@deepin-ci-robot

Copy link
Copy Markdown

deepin pr auto review

我来对这个代码变更进行详细分析:

  1. 代码逻辑改进:
  • 删除了 appItems()appItem() 这两个函数,这是很好的改进。因为:
    • appItems() 每次调用都要遍历整个模型,效率较低
    • appItem() 依赖于 appItems(),继承了其性能问题
  • 现在统一使用 itemFromDesktopId(),这个函数使用了 Qt 模型框架的 match() 方法,效率更高
  1. 代码质量改进:
  • itemFromDesktopId() 方法标记为 const,这是正确的设计,因为查找操作不应该修改模型状态
  • 移除了冗余的代码,使代码结构更清晰
  • 使用 Qt 框架提供的标准方法(match())而不是自己实现查找逻辑
  1. 性能优化:
  • 之前 appItems() 的时间复杂度是 O(n),每次都要遍历所有项
  • itemFromDesktopId() 使用 Qt 内部优化的 match() 方法,性能更好
  • 避免了不必要的类型转换(dynamic_cast
  1. 代码安全:
  • 使用 Qt 框架的标准方法,更不容易出错
  • 减少了手动类型转换,降低了运行时错误的风险
  1. 其他建议:
  • 考虑为 itemFromDesktopId() 添加参数验证,确保输入的 freedesktopId 不为空
  • 可以考虑为频繁调用的查找操作添加缓存机制
  • 建议在 match() 调用时使用更精确的匹配标志,目前使用 Qt::MatchExactly 是合适的

总的来说,这次改动是一个很好的重构,提高了代码的性能和可维护性。建议继续保持这种简化代码、使用框架标准方法的开发方式。

@deepin-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: 18202781743, BLumia

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@BLumia BLumia merged commit 33c862c into linuxdeepin:master Dec 30, 2025
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants